package com.bi.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.bi.entity.DataComponentField;

import java.util.List;

/**
 * 数据组件字段服务接口
 * 
 * @author BI Platform Team
 * @since 1.0.0
 */
public interface DataComponentFieldService extends IService<DataComponentField> {

    /**
     * 根据组件ID获取字段配置
     * 
     * @param componentId 组件ID
     * @return 字段配置列表
     */
    List<DataComponentField> getFieldsByComponentId(Long componentId);

    /**
     * 批量保存字段配置
     * 
     * @param componentId 组件ID
     * @param fields 字段配置列表
     * @return 保存结果
     */
    boolean saveFields(Long componentId, List<DataComponentField> fields);

    /**
     * 删除组件的所有字段配置
     * 
     * @param componentId 组件ID
     * @return 删除结果
     */
    boolean deleteFieldsByComponentId(Long componentId);

    /**
     * 更新字段排序
     * 
     * @param componentId 组件ID
     * @param fieldId 字段ID
     * @param sortOrder 新的排序顺序
     * @return 更新结果
     */
    boolean updateFieldSort(Long componentId, Long fieldId, Integer sortOrder);

    /**
     * 复制字段配置
     * 
     * @param sourceComponentId 源组件ID
     * @param targetComponentId 目标组件ID
     * @return 复制结果
     */
    boolean copyFields(Long sourceComponentId, Long targetComponentId);

    /**
     * 从数据源自动生成字段配置
     * 
     * @param componentId 组件ID
     * @param dataSourceConfig 数据源配置
     * @return 生成的字段配置
     */
    List<DataComponentField> generateFieldsFromDataSource(Long componentId, String dataSourceConfig);
}